import time

def clock_it_deco(func):
    def wrapper(*args, **kwargs):
        start_time = time.time()
        result = func(*args, **kwargs)
        end_time = time.time()
        print(f"{func.__name__} execute time: {format(end_time - start_time, '.4f')} s")
        return result
    return wrapper

def cache_deco(func):
    a = {}
    def wrapper(value):
        if value not in a:
            a[value] = func(value)
        return a[value]
    return wrapper

@clock_it_deco
@cache_deco
def fibo(n):
    if n <= 1:
        return n
    else:
        return fibo(n-1) + fibo(n-2)

print(fibo(10))